﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Transactions;
using AutoMapper;
using DTO;

namespace DAO
{
    public class DocGiaDAO
    {
        public static bool Them(DocGiaDTO dto)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                //khởi tạo datacontext
                QuanLyThuVienDataContext context = new QuanLyThuVienDataContext();

                //tạo đối tượng
                DocGia dg = new DocGia();

                //mapping
                Mapper.CreateMap<DocGiaDTO, DocGia>();
                dg = Mapper.Map<DocGiaDTO, DocGia>(dto);

                //thêm vào ds khi nhấn submit
                context.DocGias.InsertOnSubmit(dg);

                //thực hiện thay đổi
                context.SubmitChanges();

                //Đọc dòng vừa ghi để lưu lại mã lên trên
                //dto.MaDocGia = dg.MaDocGia;

                //transaction thành công
                scope.Complete();
            }
            return true;
        }

        public static List<DocGiaDTO> DocDanhSach()
        {
            //tạo list
            List<DocGiaDTO> list = new List<DocGiaDTO>();

            //khởi tạo datacontext
            QuanLyThuVienDataContext context = new QuanLyThuVienDataContext();

            var ds = from n in context.DocGias
                     select n;

            //duyệt danh sách
            foreach (DocGia n in ds)
            {
                //mapping từ linQ vào dto
                DocGiaDTO dto = new DocGiaDTO();
                Mapper.CreateMap<DocGia, DocGiaDTO>();
                dto = Mapper.Map<DocGia, DocGiaDTO>(n);
                //thêm vào list
                list.Add(dto);
            }
            //trả về kq
            return list;
        }

        public static bool CapNhatTienNo(DocGiaDTO dto)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                //khởi tạo datacontext
                QuanLyThuVienDataContext context = new QuanLyThuVienDataContext();

                //đọc thôn tin độc giả từ csdl
                DocGia dg = context.DocGias.Single(c => c.MaDocGia == dto.MaDocGia);

                //cập nhật tiền nợ
                dg.TienNo = dto.TienNo;

                //thực hiện thay đổi
                context.SubmitChanges();

                //transaction thành công
                scope.Complete();
            }
            return true;
        }
    }
}
